You are looking at historical revision 32311 of this page. It may differ significantly from its current revision.
- Unit srfi-69
- Hash Table Procedures
- make-hash-table
- alist->hash-table
- hash-table?
- hash-table-size
- hash-table-equivalence-function
- hash-table-hash-function
- hash-table-min-load
- hash-table-max-load
- hash-table-weak-keys
- hash-table-weak-values
- hash-table-has-initial?
- hash-table-initial
- hash-table-keys
- hash-table-values
- hash-table->alist
- hash-table-ref
- hash-table-ref/default
- hash-table-exists?
- hash-table-set!
- hash-table-update!
- hash-table-update!/default
- hash-table-copy
- hash-table-delete!
- hash-table-remove!
- hash-table-clear!
- hash-table-merge
- hash-table-merge!
- hash-table-map
- hash-table-fold
- hash-table-for-each
- hash-table-walk
- Hashing Functions
- recursive-hash-max-depth
- recursive-hash-max-length
- Hash Table Procedures
Unit srfi-69
CHICKEN implements SRFI 69 with SRFI 90 extensions. For more information, see SRFI-69 and SRFI-90.
Hash Table Procedures
make-hash-table
[procedure] (make-hash-table [TEST HASH SIZE] [#:test TEST] [#:hash HASH] [#:size SIZE] [#:initial INITIAL] [#:min-load MIN-LOAD] [#:max-load MAX-LOAD] [#:weak-keys WEAK-KEYS] [#:weak-values WEAK-VALUES])Returns a new HASH-TABLE with the supplied configuration.
- TEST
- The equivalence function.
- HASH
- The hash function.
- SIZE
- The expected number of table elements.
- INITIAL
- The default initial value.
- MIN-LOAD
- The minimum load factor. A flonum in (0.0 1.0).
- MAX-LOAD
- The maximum load factor. A flonum in (0.0 1.0).
- WEAK-KEYS
- Use weak references for keys. (Ignored)
- WEAK-VALUES
- Use weak references for values. (Ignored)
Please note that hash tables are not guaranteed to compare equal? to each other, even if they contain exactly the same key/value pairs.
alist->hash-table
[procedure] (alist->hash-table A-LIST [#:test TEST] [#:hash HASH] [#:size SIZE] [#:initial INITIAL] [#:min-load MIN-LOAD] [#:max-load MAX-LOAD] [#:weak-keys WEAK-KEYS] [#:weak-values WEAK-VALUES])Returns a new HASH-TABLE. The HASH-TABLE is populated from the A-LIST. The keyword arguments are per make-hash-table.
hash-table?
[procedure] (hash-table? OBJECT)Is the OBJECT a hash-table?
hash-table-size
[procedure] (hash-table-size HASH-TABLE)Returns the number of associations in HASH-TABLE.
hash-table-equivalence-function
[procedure] (hash-table-equivalence-function HASH-TABLE)The HASH-TABLE equivalence-function.
hash-table-hash-function
[procedure] (hash-table-hash-function HASH-TABLE)The HASH-TABLE hash-function.
hash-table-min-load
[procedure] (hash-table-min-load HASH-TABLE)The HASH-TABLE minimum load factor.
hash-table-max-load
[procedure] (hash-table-max-load HASH-TABLE)The HASH-TABLE maximum load factor.
hash-table-weak-keys
[procedure] (hash-table-weak-keys HASH-TABLE)Does the HASH-TABLE use weak references for keys?
hash-table-weak-values
[procedure] (hash-table-weak-values HASH-TABLE)Does the HASH-TABLE use weak references for values?
hash-table-has-initial?
[procedure] (hash-table-has-initial? HASH-TABLE)Does the HASH-TABLE have a default initial value?
hash-table-initial
[procedure] (hash-table-initial HASH-TABLE)The HASH-TABLE default initial value.
hash-table-keys
[procedure] (hash-table-keys HASH-TABLE)Returns a list of the keys in the HASH-TABLE population.
hash-table-values
[procedure] (hash-table-values HASH-TABLE)Returns a list of the values in the HASH-TABLE population.
hash-table->alist
[procedure] (hash-table->alist HASH-TABLE)Returns the population of the HASH-TABLE as an a-list.
hash-table-ref
[procedure] (hash-table-ref HASH-TABLE KEY)Returns the VALUE for the KEY in the HASH-TABLE.
Aborts with an exception when the KEY is missing.
hash-table-ref/default
[procedure] (hash-table-ref/default HASH-TABLE KEY DEFAULT)Returns the VALUE for the KEY in the HASH-TABLE, or the DEFAULT when the KEY is missing.
hash-table-exists?
[procedure] (hash-table-exists? HASH-TABLE KEY)Does the KEY exist in the HASH-TABLE?
hash-table-set!
[procedure] (hash-table-set! HASH-TABLE KEY VALUE)Set the VALUE for the KEY in the HASH-TABLE.
A setter for hash-table-ref is defined, so
(set! (hash-table-ref HASH-TABLE KEY) VALUE)
is equivalent to
(hash-table-set! HASH-TABLE KEY VALUE)
hash-table-update!
[procedure] (hash-table-update! HASH-TABLE KEY [UPDATE-FUNCTION [DEFAULT-VALUE-FUNCTION]])Sets or replaces the VALUE for KEY in the HASH-TABLE.
The UPDATE-FUNCTION takes the existing VALUE for KEY and returns the new VALUE. The default is identity
The DEFAULT-VALUE-FUNCTION is called when the entry for KEY is missing. The default uses the (hash-table-initial-value), if provided. Otherwise aborts with an exception.
Returns the new VALUE.
hash-table-update!/default
[procedure] (hash-table-update!/default HASH-TABLE KEY UPDATE-FUNCTION DEFAULT-VALUE)Sets or replaces the VALUE for KEY in the HASH-TABLE.
The UPDATE-FUNCTION takes the existing VALUE for KEY and returns the new VALUE.
The DEFAULT-VALUE is used when the entry for KEY is missing.
Returns the new VALUE.
hash-table-copy
[procedure] (hash-table-copy HASH-TABLE)Returns a shallow copy of the HASH-TABLE.
hash-table-delete!
[procedure] (hash-table-delete! HASH-TABLE KEY)Deletes the entry for KEY in the HASH-TABLE.
hash-table-remove!
[procedure] (hash-table-remove! HASH-TABLE PROC)Calls PROC for all entries in HASH-TABLE with the key and value of each entry. If PROC returns true, then that entry is removed.
hash-table-clear!
[procedure] (hash-table-clear! HASH-TABLE)Deletes all entries in HASH-TABLE.
hash-table-merge
[procedure] (hash-table-merge HASH-TABLE-1 HASH-TABLE-2)Returns a new HASH-TABLE with the union of HASH-TABLE-1 and HASH-TABLE-2.
hash-table-merge!
[procedure] (hash-table-merge! HASH-TABLE-1 HASH-TABLE-2)Returns HASH-TABLE-1 as the union of HASH-TABLE-1 and HASH-TABLE-2.
hash-table-map
[procedure] (hash-table-map HASH-TABLE FUNC)Calls FUNC for all entries in HASH-TABLE with the key and value of each entry.
Returns a list of the results of each call.
hash-table-fold
[procedure] (hash-table-fold HASH-TABLE FUNC INIT)Calls FUNC for all entries in HASH-TABLE with the key and value of each entry, and the current folded value. The initial folded value is INIT.
Returns the final folded value.
hash-table-for-each
[procedure] (hash-table-for-each HASH-TABLE PROC)Calls PROC for all entries in HASH-TABLE with the key and value of each entry.
hash-table-walk
[procedure] (hash-table-walk HASH-TABLE PROC)Calls PROC for all entries in HASH-TABLE with the key and value of each entry.
Hashing Functions
All hash functions return a fixnum in the range [0 BOUND).
When given the fixnum RANDOMIZATION, these functions will use this to perturb the value; if not specified, the value will differ for each invocation of your program. This is for security reasons; an attacker who knows what a value hashes to can deliberately try to cause collisions, thereby flattening your hash table, effectively reducing it to a list. Always make sure you don't expose any hashed value to an attacker.
number-hash
[procedure] (number-hash NUMBER [BOUND RANDOMIZATION])For use with = as a hash-table-equivalence-function.
object-uid-hash
[procedure] (object-uid-hash OBJECT [BOUND RANDOMIZATION])Currently a synonym for equal?-hash.
symbol-hash
[procedure] (symbol-hash SYMBOL [BOUND RANDOMIZATION])For use with eq? as a hash-table-equivalence-function.
keyword-hash
[procedure] (keyword-hash KEYWORD [BOUND RANDOMIZATION])For use with eq? as a hash-table-equivalence-function.
string-hash
[procedure] (string-hash STRING [BOUND START END RANDOMIZATION])For use with string=? as a hash-table-equivalence-function. The optional START and END arguments may be given to limit the hash calculation to a specific sub-section of STRING.
string-ci-hash
[procedure] (string-hash-ci STRING [BOUND START END RANDOMIZATION])[procedure] (string-ci-hash STRING [BOUND START END RANDOMIZATION])
For use with string-ci=? as a hash-table-equivalence-function.
eq?-hash
[procedure] (eq?-hash OBJECT [BOUND RANDOMIZATION])For use with eq? as a hash-table-equivalence-function.
eqv?-hash
[procedure] (eqv?-hash OBJECT [BOUND RANDOMIZATION])For use with eqv? as a hash-table-equivalence-function.
equal?-hash
[procedure] (equal?-hash OBJECT [BOUND RANDOMIZATION])For use with equal? as a hash-table-equivalence-function.
hash
[procedure] (hash OBJECT [BOUND RANDOMIZATION])Synonym for equal?-hash.
hash-by-identity
[procedure] (hash-by-identity OBJECT [BOUND RANDOMIZATION])Synonym for eq?-hash.
recursive-hash-max-depth
[parameter] (recursive-hash-max-depth)The maximum structure depth to follow when computing a hash value. The default is 4.
recursive-hash-max-length
[parameter] (recursive-hash-max-length)The maximum vector length to follow when computing a hash value. The default is 4.
Previous: Unit srfi-18 Next: Unit posix